package top.wilbert.collegelink.message.service;

import org.springframework.stereotype.Service;
import top.wilbert.collegelink.common.utils.R;
import top.wilbert.collegelink.message.entity.ChatMessageEntity;

@Service
public interface ChatService {

    /**
     * 查询聊天双方的关联id
     * @param fromUserId
     * @param toUserId
     * @return
     */
    Long selectAssociation(Long fromUserId, Long toUserId);

    /**
     * 是否第一次聊天
     * @param fromUserId
     * @param toUserId
     * @return
     */
    void isFirstChat(Long fromUserId, Long toUserId);

    /**
     * 保存聊天记录
     * @param chatMessageEntity
     * @return
     */
    void saveMessage(ChatMessageEntity chatMessageEntity);

    /**
     * 获取当前用户的聊天列表
     * @param fromUserId
     * @return
     */
    R getFromUserChatList(Long fromUserId);

    /**
     * 获取发送者与接收者的最近的聊天记录
     * @param fromUserId
     * @param toUserId
     * @param currentIndex
     * @return
     */
    R getRecentChatRecords(Long fromUserId, Long toUserId, int currentIndex);

    /**
     * 更新是否在同一窗口值
     * @param fromUserId
     * @param toUserId
     */
    void updateWindows(Long fromUserId, Long toUserId);

    /**
     * 获取当前用户的未读数
     * @param userId
     * @return
     */
    R getUnreadTotalNumber(Long userId);

    /**
     *
     * @param userId
     */
    void resetWindows(Long userId);

}

